PROGRAM hello;
  CONST c1 = 10;
  CONST c2 = 1.0;

  TYPE uint = INTEGER;

  TYPE Node = ^NodeStruct;
    NodeStruct = RECORD 
      next: Node;
      data: INTEGER;
    END;

  VAR 
    a, b, c, i: INTEGER;
    ch: CHAR;
    str: ^CHAR;
    s: STRING;
    b1: BOOLEAN;
    arr2: ARRAY [1..2, 1..2] OF INTEGER;
    test: RECORD 
      i: ARRAY [1..2, 1..2] OF INTEGER;
    END;

  FUNCTION Test(a: INTEGER; b: INTEGER): INTEGER;
    VAR v1, v2: INTEGER;
      n, temp: Node;
  BEGIN 
    New(n);
    New(temp);
    n^.data := 5;
    n^.next := temp;
    n^.next^.next := NIL;
    Dispose(n);
    Test := 3;
  END;

  PROCEDURE Test2;
  BEGIN ;
  END;



BEGIN 
  b := (5 + 5 + 5 + 3) / 2;
  c := (5 + 5 + 5 + 3) mod 2;

  a := a AND b OR c;

  arr2[2, 2] := 1;

  str := 'abc';
  s := str;

  IF TRUE THEN BEGIN 
    i := 1;
  END ELSE BEGIN 
    i := -1;
  END;

  IF a < b THEN BEGIN 
  END ;


  IF a = b THEN BEGIN 
  END ;


  i := 0;
  WHILE i > 0 DO BEGIN 
    i := i - 1;
  END;

  i := 1;
  REPEAT 
    i := i + 1;
  UNTIL i <= 10;

  c := 0;
  FOR i := 1 TO 10 DO BEGIN 
    c := c + i;
  END;

  Test(1, 10);

  ReadLn();
END.